/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package besa_adaptado;

import adaptation.common.ProfileAES;
import adaptation.profilemanager.persistence.FacadeProfileManagerPersistence;
import besa_adaptado.perfiles.PerfilDispositivo;
import besa_adaptado.perfiles.PerfilLocalizacion;
import besa_adaptado.perfiles.PerfilUsuario;
import java.lang.reflect.Field;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Ayllu
 */
public class CrearPefiles {

    public static void main(String[] args) {
        /**
         * TEST FACADE PERSISTENCIA
         */
        boolean crear = true; //cambiar este valor para crear perfiles de ejemplo en el caso de no existir
        Logger.getLogger(CrearPefiles.class.getName()).log(Level.INFO,"Probando Persistencia");
        FacadeProfileManagerPersistence facade = new FacadeProfileManagerPersistence();
        if (crear) {
            crearPerfiles(facade);
        } else {
            verPerfiles(facade);
        }
    }

    private static void crearPerfiles(FacadeProfileManagerPersistence facade) {
        //CREANDO PERFIL DE DISPOSITIVO
        PerfilDispositivo perfil = new PerfilDispositivo();
        perfil.setNombre("RT50");
        perfil.setResolucion("200x320");
        perfil.setTamanio("Pequeño");
        facade.persist(perfil);

        
        perfil = new PerfilDispositivo();
        perfil.setNombre("Nokia");
        perfil.setResolucion("320x240");
        perfil.setTamanio("Mediano");
        facade.persist(perfil);
  
        
        perfil = new PerfilDispositivo();
        perfil.setNombre("Samsung");
        perfil.setResolucion("640x480");
        perfil.setTamanio("Grande");
        facade.persist(perfil);

        
        //CREANDO PERFIL DE USUARIO
        PerfilUsuario perfilUsr = new PerfilUsuario();
        perfilUsr.setNombre("Juan");
        perfilUsr.addExperticia("Quimica",0.2f);
        perfilUsr.addExperticia("Fisica",0.5f);
        perfilUsr.addExperticia("Macroeconomia",1.0f);
        perfilUsr.setGrado("Doctorado");
        facade.persist(perfilUsr);

        
        perfilUsr = new PerfilUsuario();
        perfilUsr.setNombre("Pepe");
        perfilUsr.addExperticia("Quimica",0.2f);
        perfilUsr.addExperticia("Fisica",0.5f);
        perfilUsr.addExperticia("Macroeconomia",1.0f);
        perfilUsr.setGrado("Pregrado");
        facade.persist(perfilUsr);

        
        perfilUsr = new PerfilUsuario();
        perfilUsr.setNombre("John");
        perfilUsr.addExperticia("Quimica",0.2f);
        perfilUsr.addExperticia("Fisica",0.5f);
        perfilUsr.addExperticia("Macroeconomia",1.0f);
        perfilUsr.setGrado("Maestria");
        facade.persist(perfilUsr);

        
         //CREANDO PERFIL DE LOCALIZACIÓN
        PerfilLocalizacion perfilLoc = new PerfilLocalizacion();
        perfilLoc.setNombre("Fernando Barón");
        perfilLoc.setNumero("2");
        perfilLoc.addConectividad("WiFi", 0.2f);
        perfilLoc.addConectividad("3G", 0.5f);
        facade.persist(perfilLoc);

        
        perfilLoc = new PerfilLocalizacion();
        perfilLoc.setNombre("Central");
        perfilLoc.setNumero("27");
        perfilLoc.addConectividad("WiFi", 1.0f);
        perfilLoc.addConectividad("3G", 0.7f);
        facade.persist(perfilLoc);

        
        perfilLoc = new PerfilLocalizacion();
        perfilLoc.setNombre("Basicas");
        perfilLoc.setNumero("57");
        perfilLoc.addConectividad("WiFi", 0.5f);
        perfilLoc.addConectividad("3G", 0.2f);
        facade.persist(perfilLoc);
        
    }

    private static void verPerfiles(FacadeProfileManagerPersistence facade) {
        List<ProfileAES> profiles = facade.getProfileList();
        for (ProfileAES pb : profiles) {
            Logger.getLogger(CrearPefiles.class.getName()).log(Level.INFO,pb.getProfileId());
            Logger.getLogger(CrearPefiles.class.getName()).log(Level.INFO,pb.getCategory());
            Field[] fieldSet = pb.getClass().getDeclaredFields();
            for (Field field : fieldSet) {
                try {
                    field.setAccessible(true);
                    String nameAndInfo = field.getName() + "->" + (field.get(pb).toString());
                    Logger.getLogger(CrearPefiles.class.getName()).log(Level.INFO,nameAndInfo);
                }
                 catch (IllegalArgumentException ex) {
                    Logger.getLogger(CrearPefiles.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(CrearPefiles.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}
